package com.ecs.core.map;

import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.ecs.core.utils.JsonRegion;

/**
 * 地形数据
 * @Author 天下无敌
 * @Date 2025/05/04 15:24
 */
public class TerrainData {
    // 纹理区域
    public transient TextureRegion region;//地形纹理
    public transient Color color;
    // 地形属性
    public int terrainId = 0;
    public int blockId = -1;//对应方块(物品）id
	public boolean isDestroy = false;//是否可以摧毁
    public float minHeight = 0;   // 最小高度
    public float maxHeight = 0;   // 最大高度
    public String colorPath = "";
	public boolean isWater = false;//是否属于水
	public JsonRegion regionData;
	
    /**
     * 从JSON文件加载地形数据
     * @param assetManager 资源管理器
     * @param path JSON文件路径
     * @return 加载完成的地形数据
     */
    public static TerrainData loadFromJson(AssetManager assetManager, String path) {
        Json json = new Json();
        TerrainData data = json.fromJson(TerrainData.class, Gdx.files.internal(path));
        
        data.region = JsonRegion.CreateRegion(data.regionData,assetManager);
		if(data.colorPath.equals("")){
		data.color = Color.WHITE;
		}else{
        data.color = json.fromJson(Color.class,Gdx.files.internal(data.colorPath));
       
		} 
		return data;
    }

    /**
     * 检查当前环境参数是否匹配此地形
     * @param height 高度
     * @return 是否匹配
     */
    public boolean matchesEnvironment(float height) {
        return height >= minHeight && height <= maxHeight;
    }
}
